package 题目集.图.割点;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 重点题：给出一个无向图，问指定的两个点之间有多少个不能被去掉的点（去掉后两点不连通的点），如果原本就不可达输出-1。
 */
public class 割点模板题 {

    private static List<Integer>[] list;
    static int[] count;
    static boolean[] vis;
    static int n;
    /**
     * 思路：先跑一次dfs，求这两个点之间的所有路劲，并对路径中经过的点进行统计。
     * 最后，经过次数=路劲数量的节点就是关键点。
     */
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        n = sc.nextInt();
        int m= sc.nextInt();
        list=new List[n+1];
        count=new int[n+1];
        vis=new boolean[n+1];
        for (int i = n; i > 0; i--) {
            list[i]=new ArrayList<>();
        }
        while (m-- > 0) {
            int from = sc.nextInt();
            int to = sc.nextInt();
            list[from].add(to);
            list[to].add(from);
        }
        int from = sc.nextInt();
        int to = sc.nextInt();
        vis[from]=true;
        int path = dfs(from, to);
        int res=0;
        if (path==0) {
            System.out.println(-1);
        }else {
            for (int i = 0; i < count.length; i++) {
               if (count[i]==path){
                   res++;
               }
            }
            System.out.println(res-1);  //-1是去掉起点
        }
    }

    /**
     * 从from到to的路径
     */
    public static int dfs(int from,int to){
        if (from==to) return 1;
        int res=0;  //记录该点路径数量
        for (Integer next : list[from]) {
            if (!vis[next]){
                vis[next]=true;
                res+= dfs(next, to);
                vis[next]=false;
            }
        }
        count[from]+=res;   //记录经过次数
        return res;
    }
}
